package Thread;
/*第一种:子类继承Thread方案--[使用率不多]
        ①编写子类MyThread1继承 Thread
        *	②子类，重写run方法[线程运行]
        *	③实例化MyThread1对象调用start方法[启动线程]
        *第二种:子类实现Runnable接口方案--[推荐用法]
        ①编写子类MyRunnable1实现Runnable 接口
        *	②子类，强制重写run方法[线程运行]
        *	③实例化MyRunnable1对象【没有start方法]
        *	④创建Thread对象，把实例化MyRunnable1对象通过构造器
        *	⑤调用Thread对象 start方法
        *   线程 继承Thread 内嵌入Runnable接口 重写Run方法

        *第三种:匿名内部类实现线程--->Lambda表达式
        */
public class RunnableAPI {
    public static void main(String[] args) {
//创建实现线程对象---启动必须用start()
        MyRunnable1 mr1 = new MyRunnable1();
//创建Thread对象----启动线程对象
        Thread t1 = new Thread(mr1);
        t1.start();
        //练习:MyRunnable2子类实现Runnable---1000次
        // 岁月不停留，可我为你守候
        MyRunnable2 mr2=new MyRunnable2();
        Thread t2=new Thread(mr2);
        t2.start();
    }
}
class MyRunnable2 extends MyRunnable1 {
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.println("岁月不停留，可我为你守候~~");
        }
    }
}
class MyRunnable1 implements Runnable {
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.println("时间不等人，但我等你");
        }
    }
}
